'----------------------------------------------
' Name: Ali Karbassi
'       Matt Latzke
'       Chris Hanegraaf
'       Brian Culp
' Date: May 1, 2007
' Description: Program 8
'              Public Enum State
'              Public Enum ReaderWriterType
'              Public Delegate Sub PassMessage
'              Public Interface ReaderWriter
'----------------------------------------------
Imports System.Threading

''' <summary>
''' State
''' </summary>
''' <remarks></remarks>
Public Enum State
   Wait
   Start
   Finish
End Enum

''' <summary>
''' Reader/Writer Type
''' </summary>
''' <remarks></remarks>
Public Enum ReaderWriterType
   Reader
   Writer
End Enum

''' <summary>
''' Delegate
''' </summary>
''' <param name="theID"></param>
''' <param name="theState"></param>
''' <param name="Total"></param>
''' <remarks></remarks>
Public Delegate Sub PassMessage(ByVal theID As String, ByVal theState As State, ByVal Total As Short)

''' <summary>
''' Reader/Writer interface
''' </summary>
''' <remarks></remarks>
Public Interface ReaderWriter

   ''' <summary>
   ''' Sets the delegate
   ''' </summary>
   ''' <value></value>
   ''' <remarks></remarks>
   WriteOnly Property DisplayMsg() As PassMessage

   ''' <summary>
   ''' Sets the main form
   ''' </summary>
   ''' <value></value>
   ''' <remarks></remarks>
   WriteOnly Property mainForm() As Form

   ''' <summary>
   ''' Returns the ID
   ''' </summary>
   ''' <value></value>
   ''' <returns></returns>
   ''' <remarks></remarks>
   ReadOnly Property ID() As String

   ''' <summary>
   ''' Returns the type
   ''' </summary>
   ''' <value></value>
   ''' <returns></returns>
   ''' <remarks></remarks>
   ReadOnly Property type() As ReaderWriterType

   ''' <summary>
   ''' Creates a new thread and starts it.
   ''' </summary>
   ''' <remarks></remarks>
   Sub SpinUp()

   ''' <summary>
   ''' Wakes up the event.
   ''' </summary>
   ''' <remarks></remarks>
   Sub WakeUp()

End Interface